
var id = 0;
var editormd;
var username = "";

// 获取正文内容
function initEdit(md) {
    editormd = editormd.markdownToHTML("editorDiv", {
        markdown: md, // Also, you can dynamic set Markdown text
        // htmlDecode : true,  // Enable / disable HTML tag encode.
        // htmlDecode : "style,script,iframe",  // Note: If enabled, you should filter some dangerous HTML tags for website security.
    });
}

// 获取文章详情
function getDetail() {
    // 获取文章id
    id = getParamByKey("id");
    if (id == null || id <= 0) {
        alert("参数有误！");
    }

    // 发送查询请求
    jQuery.ajax({
        url: "art/getdetail",
        type: "POST",
        data: {
            "id": id
        },
        success: function (res) {
            if (res.code == 200 && res.data != null && res.data.id > 0) {
                // 查询文章成功，展示正文
                jQuery("#title").html(res.data.title);
                //jQuery("#author").html(res.data.username);
                //jQuery("#author2").html(res.data.username);
                jQuery("#rcount").html(res.data.rcount);
                jQuery("#createtime").html(res.data.createtime);
                initEdit(res.data.content);

                username = res.data.username;
                // console.log(username);
                getCountByUsername()
            } else {
                alert("操作失败！" + res.msg);
            }
        }
    });

}

getDetail();

// 查询当前作者文章总数
function getCountByUsername() {
    jQuery.ajax({
        url: "art/getcountbyusername",
        type: "POST",
        data: {
            "username": username
        },
        success: function (res) {
            if (res.code == 200 && res.data > 0) {
                jQuery("#counter").html("文章总数：" + res.data);
            } else {
                jQuery("#counter").html("文章总数：" + 0);
            }
        }
    });
}


// 增加阅读量
function addRCount() {
    jQuery.ajax({
        url: "art/addrcount",
        type: "POST",
        data: {
            "id": id
        },
        success: function () { }
    });
}

addRCount();

// 根据文章id获取用户信息
function getUserInfoByArtId() {
    // 获取文章id
    id = getParamByKey("id");
    if (id == null || id <= 0) {
        alert("参数有误！");
    }

    jQuery.ajax({
        url: "art/getuserinfobyartid",
        type: "POST",
        data: {
            "id": id
        },
        success: function (res) {
            if (res.code == 200 && res.data != null && res.data.id > 0) {
                // 获取用户信息成功！
                // 头像
                if (res.data.photo != null && res.data.photo != '') {
                    jQuery("#avatar-img").attr("src", "/photo/" + res.data.photo);
                } else {
                    jQuery("#avatar-img").attr("src", "/img/avatar.png");
                }

                // 用户名或昵称
                if (res.data.nickname != null && res.data.nickname != 'undefined') {
                    jQuery("#author").html(res.data.nickname);
                    jQuery("#author2").html(res.data.nickname);
                } else {
                    jQuery("#author").html(res.data.username);
                    jQuery("#author2").html(res.data.username);
                }

                // gitee地址
                if (res.data.gitee != null && res.data.gitee != '') {
                    jQuery("#url").attr("href", res.data.gitee);
                } else {
                    console.log("该作者未设置gitee地址！");
                }

                // 获取当前作者的总访问量和获评数
                getTotalRCountAndCommentByUId(res.data.id);

                // 为头像和用户名增加点击事件，点击可跳转到对应作者的博客列表页

                document.getElementById("avatar-img").addEventListener('click', function () {
                    toPersonPage(res.data.id);
                });

                document.getElementById("author2").addEventListener('click', function () {
                    toPersonPage(res.data.id);
                });

                // 是否是当前用户
                isLoginUser(res.data.id);
            } else {
                alert("获取作者信息失败！");
                location.href = "blog_list.html";
            }
        }
    });
}
getUserInfoByArtId();


// 更新按钮状态的函数
function updateButtonState(userId, isFollowed) {
    const button = document.querySelector(".attention-button");

    if (isFollowed) {
        button.textContent = "已关注";
    } else {
        button.textContent = "关注";
    }
}

// 点击关注按钮时触发的函数
function toggleFollow(userId) {
    const button = document.querySelector(".attention-button");
    const isFollowed = button.textContent.trim() === "已关注";

    if (isFollowed) {
        // 执行取消关注逻辑，通过发送 AJAX 请求给服务器
        // 然后根据返回结果来更新按钮和状态
        cancelFollow(userId, button);
    } else {
        // 执行关注逻辑，可以通过发送 AJAX 请求给服务器
        // 然后根据返回结果来更新按钮和状态
        follow(userId, button);
    }
}

// 取消关注函数
function cancelFollow(followingId, button) {
    console.log("cancelFollow: " + followingId);
    // 发送取消关注的 AJAX 请求
    jQuery.ajax({
        url: "follow/del_follow_relationship",
        type: "POST",
        data: {
            "followingId": followingId
        },
        success: function (res) {
            if (res.code == 200 && res.data == 1) {
                // 取消关注成功 
                // 更新按钮状态
                updateButtonState(followingId, false); // 将按钮状态设置为未关注
            } else {
                alert("取消关注失败！" + res.msg);
            }
        }
    });
}

// 关注函数
function follow(followingId, button) {
    console.log("follow: " + followingId);
    // 发送关注的 AJAX 请求
    jQuery.ajax({
        url: "follow/add_follow_relationship",
        type: "POST",
        data: {
            "followingId": followingId
        },
        success: function (res) {
            if (res.code == 200 && res.data == 1) {
                // 关注成功 
                // 更新按钮状态
                updateButtonState(followingId, true); // 将按钮状态设置为已关注
            } else if (res.code == 200 && res.data == 0) {
                alert("已经关注了该用户！");
            } else {
                alert("关注失败！" + res.msg);
            }
        }
    });
}



//////////////////////////

function toPersonPage(uid) {
    // alert(uid);
    var url = "personal_page.html?uid=" + uid;
    console.log("url:" + url);
    // 打开新窗口
    window.open(url, '_blank');
}

function isLoginUser(uid) {
    jQuery.ajax({
        url: "user/is_login_user",
        type: "POST",
        data: {
            "uid": uid
        },
        success: function (res) {
            if (res.code == 200) {
                jQuery(".isLogin").show();
                if (res.data == 1) {
                    // 当前文章属于登录的用户
                    jQuery("#isLoginUser").show();
                    jQuery("#notLoginUser").hide();
                }
                else if (res.data == -1) {
                    // 当前文章不属于登录的用户
                    jQuery("#isLoginUser").hide();
                    jQuery("#notLoginUser").show();
                    // 添加属性user-id
                    jQuery(".attention-button").attr("user-id", uid);

                    // 判断是否关注该用户，来更新按钮状况
                    isFollowing(uid);
                } else if (res.data == 0) {
                    // 当前用户未登录
                    jQuery(".isLogin").hide();
                }
            } else {
                console.log("出现错误！" + res.msg);
                location.href = "blog_list.html";
            }
        }
    });
}

function isFollowing(followingId){
    console.log("isFollowing:" + followingId);
    jQuery.ajax({
        url:"follow/is_following",
        type:"POST",
        data:{
            "followingId":followingId
        },
        success:function(res){
            if(res.code == 200 && res.data == true){
                // 已经关注
                jQuery(".attention-button").html("已关注")
            } else if(res.code == 200 && res.data == false){
                jQuery(".attention-button").html("关注")
            } else {
                alert("查询失败！" + res.msg);
            }
        }
    });
}



// 内容显示的折叠、收起功能
jQuery(document).ready(function () {
    var contentDiv = jQuery("#editorDiv");
    var expandButton = jQuery("#expandButton");

    // 使用 MutationObserver 监听内容区域的变化
    var observer = new MutationObserver(function (mutations) {
        // 当内容发生变化时，获取内容的实际高度
        var contentHeight = contentDiv[0].scrollHeight;

        var maxContentHeight = 500; // 设置最大高度阈值

        if (contentHeight > maxContentHeight) {
            expandButton.show();
        } else {
            expandButton.hide();
        }
    });

    // 配置 MutationObserver 监听属性
    var config = { attributes: true, childList: true, subtree: true };

    // 开始监听
    observer.observe(contentDiv[0], config);

    // 初始状态隐藏或显示按钮
    expandButton.click(function () {
        contentDiv.toggleClass("art-content");
        if (contentDiv.hasClass("art-content")) {
            expandButton.text("展开更多");
        } else {
            expandButton.text("收起内容");
        }
    });
});


// 获取当前登录用户的信息
var loginUserID = 0;
function getLoginUserID() {
    jQuery.ajax({
        url: "user/getuserinfo",
        type: "POST",
        data: {},
        success: function (res) {
            if (res.code == 200 && res.data != null) {
                loginUserID = res.data.id;
                console.log("loginUserID1 = " + loginUserID);
            } else {
                console.log("用户未登录！");
            }
        }
    });
}


getLoginUserID();

console.log("loginUserID2 = " + loginUserID);

// 初始化评论信息
function initComments() {
    // 获取文章id
    var aid = getParamByKey("id");
    if (aid == null || aid <= 0) {
        alert("参数有误！");
    }

    // 发送请求
    jQuery.ajax({
        url: "comment/getcomments",
        type: "POST",
        data: {
            "aid": aid
        },
        success: function (res) {
            if (res.code == 200 && res.data.length > 0) {
                // 获取成功
                var commentListHtml = "";
                for (var i = 0; i < res.data.length; i++) {
                    var item = res.data[i];
                    commentListHtml += '<div class="comment">';
                    commentListHtml += '<div class="comment-header">'
                    if (item.photo != null && item.photo != '') {
                        commentListHtml += '<img class="avatar" id="avatar-comment" src="/photo/' + item.photo + '">';
                    } else {
                        commentListHtml += '<img class="avatar" id="avatar-comment" src="./img/avatar.png">';
                    }

                    if (item.nickname != null && item.nickname != "undefined") {
                        commentListHtml += '<h3 id="username">' + item.nickname + '：</h3>';
                    } else {
                        commentListHtml += '<h3 id="username">' + item.username + '：</h3>';
                    }

                    commentListHtml += '<span id="commenttime">' + item.createtime + '</span>';
                    commentListHtml += '</div>';

                    commentListHtml += '<div class="comment-content">';
                    commentListHtml += '<p id="content">' + item.content + '</p>';
                    commentListHtml += '</div>';

                    // 判断是否为当前登录用户的评论，以及是否显示删除按钮
                    console.log("uid : " + item.uid + "==========" + loginUserID);
                    if (item.uid == loginUserID) {
                        commentListHtml += '<div class="delete">';
                        commentListHtml += '<button class="delete-comment" data-comment-id="' + item.id + '"';
                        commentListHtml += ' onclick="delComment(this.getAttribute(\'data-comment-id\'))">';
                        commentListHtml += '删除评论</button>';
                        commentListHtml += '</div>';
                    }

                    commentListHtml += '</div>';
                }
                // 将构建好的评论内容插入到评论区域
                jQuery("#commentList").html(commentListHtml);
            } else if (res.code == 200 && res.data.length == 0) {
                // 无评论
                jQuery("#commentList").html("<h3>暂无评论！</h3>");
            } else {
                console.log("获取评论信息失败！" + res.msg);
            }
        }
    });
}

initComments();

// 点击评论删除按钮时执行的函数
function delComment(commentId) {

    // 获取文章id
    var aid = getParamByKey("id");
    if (aid == null || aid <= 0) {
        alert("文章ID参数有误！");
    }

    // 现在 commentId 参数就是评论的 ID
    console.log("要删除的评论ID：" + commentId);
    if (commentId == null || commentId <= 0) {
        alert("评论ID参数错误！");
    }

    jQuery.ajax({
        url: "comment/delbyid",
        type: "POST",
        data: {
            "id": commentId,
            "aid": aid
        },
        success: function (res) {
            if (res.code == 200 && res.data == 1) {
                alert("删除成功！");
                initComments();
            } else {
                alert("删除失败！" + res.msg);
            }
        }
    });
}


// 提交评论给后端
function subComment() {
    // 获取评论内容
    var commentContent = jQuery("#inputText");
    if (commentContent.val().trim() == "") {
        alert("请先输入评论内容!");
        commentContent.focus();
    }

    if (commentContent.val().trim().length > 500) {
        alert("评论内容的长度不能超过500！");
        commentContent.focus();
    }

    // 获取文章id
    var aid = getParamByKey("id");
    if (aid == null || aid <= 0) {
        alert("参数有误！");
    }

    // 发送给后端
    jQuery.ajax({
        url: "comment/add",
        type: "POST",
        data: {
            "aid": aid,
            "content": commentContent.val()
        },
        success: function (res) {
            if (res.code == 200 && res.data == 1) {
                commentContent.val("");
                initComments();
            } else {
                alert("评论失败！" + res.msg);
            }
        }
    });
}
